home *** CD-ROM | disk | FTP | other *** search
- Version notes for CPP (these are more notes to myself than anything that
- should be taken as gospel, btw -sb):
-
- 5/31/93 Version 1.0.0 released.
-
- 6/2/93 First bug (sigh...): wasn't recognizing '?' as a valid token.
-
- 6/3/93 Version 1.0.1 released.
-
- 6/13/93 Small bug in handling of -W and -f options (strange, I know
- they were working before...)
-
- 6/14/93 Version 1.0.2 released.
-
- 9/7/93 - do_undef() was incorrectly calling token() rather than
- _one_token(), and thus chewing into the next line of input.
- Thanks to Thorsten Roskowetz for pointing this out.
- - added some basic copyright information -- basically, you can
- do anything you want with this program except sell it or
- claim it as your own work, and if it blows up your house and
- eats your dog, it's not my fault. ;)
-
- 9/8/93 Version 1.0.3 released.
-
- 9/14/93 - [c/o Andreas Schwab] In include.c: if find_include_file()
- couldn't find the include file, it incorrectly returned the
- path of the last place it checked instead of NULL.
- - [c/o Andreas Schwab] In token.c: when xlate_token() read
- either of the tokens '!=' or '==', it left the last '=' in
- the input to be re-read.
- - [c/o Thorsten Roskowetz] In if_expr.c: the handling of
- '\xhh' sequences in char_const() was wildly wrong. Not only
- were the hex digits A-F being returned as values 0-5, but
- the next character after the sequence (which might have been
- the closing '!) was being skipped.
- - [c/o Andreas Schwab] Fixed up several function calls that
- were passing the wrong number of parameters (if only HSC
- did prototypes!), and deleted a few functions that were no
- longer being used.
- - Fixed a few comments that were out of sync with the code they
- were commenting.
-
- 9/15/93 Version 1.0.4 released.
-
- 11/27/93 - In macro.c: Fixed the expansion of built-in macros like
- __DATE__ and __TIME__; they were expanding to "__DATE__"
- and "__TIME__".
- - In define.c: Finally finished the macro_eq() function for
- testing equality of macro bodies. For the moment, it is
- only experimental.
- [many speedup suggestions due to Thorsten Roskowetz:]
- - In hash.c, token.c: Forgo explicitly free()'ing memory during
- at-exit cleanup of the macro table; we trust the operating
- system to do the right thing.
- - In hash.c: In hash_id(), pull the modulus operation out of
- the loop.
- - In pound.c: Identify preprocessor directives by their hash
- values, rather than by string comparison.
- - In *.c: Liberal application of the "register" keyword;
- apparently I was putting too much faith in the optimizer to
- do this for me.
-
- 12/17/93 - Version 1.0.5 released.
-
- 1/4/94 Another year, another pack of bugs... :-(
- - [c/o Thorsten Roskowetz] In macro.c: expand() would
- sometimes push the token it was passed directly back onto the
- token stream; the caller then free_token()'ed that token,
- causing havoc. This happened primarily when expanding macro
- arguments. Now we push a copy of the token when necessary.
- - In token.c: After calling expand(), exp_token() should
- free_token() the token it just expanded.
- - [c/o Andreas Schwab] In define.c: I knew I couldn't get
- macro_eq() right the first time. :-/ Do string comparison
- on the |txt| member, not the |type| member.
- - [c/o Thorsten Roskowetz] In *.c, global.h: Assorted micro-
- optimizations and manual coalescing of string constants.
- - In macro.c: Sigh. The leading whitespace that expand() adds
- to its resulting token list was being aliased directly out of
- the token being expanded, which was later destroyed. Now we
- copy the whitespace properly.
-
- 1/5/94 - In define.c: get_parms() was losing all but the first and last
- macro parameters.
- - Version 1.0.6 released.
-
- 1/6/94 - In macro.c: Corner-case bug: given:
- #define a(m) m(5)
- #define b(x) #x
- a(b) should expand to "5"; but expand_tlist() was painting the
- 'b' blue prematurely. Now, if a token representing a macro that
- takes arguments is followed immediately by a STOP token, we mark
- it to be unpainted upon return to expand_tlist().
-
- 2/19/94 - In main.c, process.c: Added support for a config file to set
- preprocessor constants.
- - In pound.c: Added pragmas CPP_cmdline_arg and CPP_delayed,
- active only while processing config file.
-
- 2/27/94 - Version 1.1.0 released.
-
- 3/16/94 - In define.c: The token immediately after a ## operator
- wasn't being checked to see if it was a macro arg.
- - In macro.c: The leading whitespace on a macro arg was being
- lost when it was expanded, so that, for instance, given:
- #define X(x) run x
- X(on) was expanding to `runon' instead of `run on'.
-
- 4/11/94 Bugs reported by Thorsten Roskowetz:
- - In pound.c: The filename in a #line directive wasn't being
- copied properly.
- - In main.c: In do_config_file(), incorrect handling of
- multiple filenames specified in $LIB.
-
- 5/4/94 - Version 1.1.1 released.
-
- 5/29/94 - Fluff mode implemented. Invoked by the `-Xfluff' switch,
- it enables the preprocessor macro __FLUFF__ and a special
- set of #pragma's.
- - In pound.c: fluff-mode pragma `#pragma fluff varargs' added ---
- simply outputs the token `__FLUFF_varargs', for digestion by
- fluff.
-
- 6/4/94 - Added option -Wno-bad-concat-tokens to disable warnings when
- the ## operator produces something weird.
-
- 6/12/94 - In comment.c: nest_check() was accidentally flagging the
- start of a comment as a nested comment.
-
- 7/1/94 - In process.c: put off output line synchronization as long
- as possible, to allow coalescing of multiple blank lines.
- This shortens the output file dramatically.
-
- 7/7/94 - In *.c: Plug an embarrassingly large number of memory leaks
- that were dropping tokens.
- - In token.c: Keep short text strings in the token structure
- itself, rather than malloc()'ing them. We can inline token
- text up to seven characters long, and leading whitespace up
- to three characters long.
- - New files alloc.cg, alloc.hg: A generic memory management
- system. We allocate small structs several at a time and
- maintain our own free lists, thus saving on malloc() overhead.
- - New file generic.c: A small utility program to provide
- pseudo-template facilities. Used to process alloc.cg and
- alloc.hg.
-
- 7/8/94 - Version 1.1.2 released.
-
- 8/1/94 - In token.c: correct definition of functions set_txt(),
- set_ws() and set_txt_n() to take (const char *) parms.
- - [c/o Frank Baumgart] In global.h, token.c, hash.c, main.c:
- Minor changes to allow cpp to compile under the Linux C
- compiler.
-
- 8/27/94 - In main.c: Fix handling of $INCLUDE so that both
- POSIX-style and TOS-style path lists are recognized.
-
- 9/7/94 - In *.c, *.h: Update the copyright information in the headers
- so that I own the code this year as well as last year. ;)
-
- 10/5/94 - In pound.c, main.c: Add option -Wunknown-pragma to warn
- about unrecognized #pragma directives.
-
- 10/14/94 - In process.c: Given:
- #define NOTHING
- NOTHING
- #include <stdio.h>
- the newline after NOTHING was failing to trigger the beginning-
- of-line condition necessary to recognize the directive. Now,
- after pushing a token back to be expanded, we go back to the top
- of the loop and repeat all tests on the new token.
-
- 10/18/94 - In comment.c: suck_ws() was allocating and freeing a new
- whitespace buffer at every call. Oops... :-} We now use a
- single file-scope malloc()'ed buffer.
-
- 12/3/94 - Added -pedantic flag. Currently the only thing it checks for
- is the obscure `0x123e+1' gotcha from ANSI/ISO 6.1.8.
-
- 12/12/94 - In macro.c: expand() now properly expands a parametrized
- macro when there are newlines between the identifier and the
- left paren.
-
- 1/6/95 - In input.c: Fixed getline() to recognize '\r\n' as a line
- terminator. Previously I trusted fgets() to translate
- `\r\n' to '\n' for me, but it doesn't if the 'b' option is
- set in $UNIXMODE.
- - Updated the copyright statements again so that I still own
- all my code. ;)
-
- 1/7/95 - In macro.c: Removed the predefined token __INCLUDE_LEVEL__,
- since it turned out to be nonstandard.
- - Version 1.1.3 released.
-
- 1/30/95 - Added new option -fimplicit-newlines to accommodate
- GCC-style embedded newlines in string literals (blech).
- - Minor changes to allow building cpp on a Unix host as part
- of a cross-compiler, including new file Makefile.cross.
- - In token.c: attempt to avoid tokenizing the entire line when
- inside a false #if conditional.
-
- 3/13/95 - Version 1.1.4 released.
-